package com.baichang.taoshunda.service;

import com.baichang.framework.excelption.ServiceException;
import com.baichang.framework.model.Page;
import com.baichang.taoshunda.entity.User;

import java.util.Map;

/**
 * Created by Administrator on 2017/8/17 0017.
 */
public interface UserService {
    /**
     * 查询用户列表
     *
     * @param nowPage
     * @param pageSize
     * @param nickName
     * @param startCreated
     * @param endCreate    @return
     * @param startTime
     * @param endTime
     */
    Page queryUserList(int nowPage, int pageSize, String nickName, String startCreated, String endCreate, String startTime, String endTime);

    /**
     * 查询用户订单表
     *
     * @param id
     * @param nowPage
     * @param pageSize @return
     */
    Page queryOrderList(Integer id, int nowPage, int pageSize);

    /**
     * 查询收支明细
     *
     * @param id
     * @param nowPage
     * @param pageSize
     * @return
     */
    Page queryMoneyDetails(Integer id, int nowPage, int pageSize);

    /**
     * 修改用户信息
     *
     * @param account
     * @param nickName
     * @param headPic
     * @param id
     * @return
     */
    int updateUserInfo(String account, String nickName, String headPic, Integer id);

    /**
     * 重置密码
     *
     * @param id
     * @param pwd
     * @return
     */
    int resetPassword(Integer id, String pwd);

    /**
     * 修改用户状态
     *
     * @param id
     * @param state
     * @return
     */
    int updateUserState(Integer id, Integer state) throws ServiceException;

    /**
     * 接口
     * 注册普通用户
     *
     * @param phone 手机号
     * @param pwd   账号
     * @param code  验证码
     * @return
     */
    Map<String, Object> registerConsumer(String phone, String pwd, String code) throws ServiceException;

    /**
     * 接口 忘记密码
     * 1.判断用户名是否存在
     * 2.修改密码
     *
     * @param userName 用户名
     * @param pwd      密码
     * @return 修改成功/失败
     */
    boolean foreginPwd(String userName, String pwd) throws ServiceException;

    /**
     * 接口
     * 获取用户个人信息
     *
     * @param userId 用户编号
     * @return 用户信息
     */
    Map<String, Object> getUserInfo(Integer userId) throws ServiceException;

    /**
     * 接口
     * 判断用户密码
     *
     * @param userId 用户编号
     * @param pwd    用户密码
     * @return 密码成功/失败
     */
    boolean checkUserPwd(Integer userId, String pwd) throws ServiceException;

    /**
     * 接口
     * 修改密码
     * 1.判断用户是否存在
     * 2.判断两次密码是否正确
     * 3.修改密码
     *
     * @param userId  用户编号
     * @param pwd     密码
     * @param surePwd 确认密码
     * @return
     */
    boolean updateUserPwd(Integer userId, String pwd, String surePwd) throws ServiceException;


    /**
     * 接口
     * 修改个人信息
     *
     * @param id      用户编号
     * @param headPic 头像
     * @param name    名称
     * @param hxKid
     * @param sex
     * @return 修改成功/失败
     * @ServiceException
     */
    boolean updateUserInfo(Integer id, String headPic, String name, String hxKid, String sex) throws ServiceException;

    /**
     * 用户登录
     * 1.判断用户是否存在
     * 2.判断用户密码是否正确
     * 3.判断账号状态是否正常
     *
     * @param userName 账号
     * @param pwd      密码
     * @param type
     * @param code
     * @return
     */
    Map<String, Object> login(String userName, String pwd, int type, String code) throws ServiceException;

    /**
     * 根据用户编号获取用户信息
     *
     * @param userId 用户编号
     * @return
     */
    User getUserBeanById(Integer userId) throws ServiceException;

    /**
     * 换绑手机号
     *
     * @param userName 手机号
     * @param userId   用户编号
     * @return
     */
    boolean changePhone(String userName, int userId) throws ServiceException;

    /**
     * 进行数据的统计
     */
    Map<String, Object> statistics() throws ServiceException;

    /**
     * 获取用户或者商家信息通过互动的编号
     *
     * @param userId
     * @return
     */
    Map<String, Object> getUserInfoByTrendsUserId(int userId);

    /**
     * 设置用的背景图
     *
     * @param userId
     * @param backGroundImage
     * @return
     */
    boolean installBackGroundImage(Integer userId, String backGroundImage);

    /**
     * @param user
     */
    void updateUser(User user);

    /**
     * 功能描述:
     * 用户实名认证
     *
     * @param userId         用户编号
     * @param cardId         身份证号
     * @param cardName       身份证上的姓名
     * @param handheldPhotos 手持身份证照片
     * @param fontCard       身份证正面
     * @param reverseCard    身份证反面
     * @return:
     * @auther: wsl
     * @date: 2018/11/29 15:52
     */
    boolean certification(int userId, String cardId, String cardName, String handheldPhotos, String fontCard, String reverseCard);

    /**
     * 功能描述:
     *
     * @param userId 用户编号
     * @return:
     * @auther: wsl
     * @date: 2018/11/29 19:28
     */
    Map<String, Object> checkIsCertification(int userId) throws ServiceException;

    /**
     * 功能描述:
     * 审核
     *
     * @param id   用户编号
     * @param type 审核类型  1  通过  2  驳回
     * @return:
     * @auther: wsl
     * @date: 2018/12/1 13:32
     */
    boolean pass(Integer id, Integer type);

    /**
     * 功能描述:
     * 查询用户的关联商家
     *
     * @param id       用户编号
     * @param nowPage  当前页
     * @param pageSize 每页条数
     * @return:
     * @auther: wsl
     * @date: 2019/1/12 10:04
     */
    Page queryCompanyList(Integer id, int nowPage, int pageSize);

    /**
     * 功能描述:
     * 查询关联商家的订单列表
     *
     * @param nowPage  页
     * @param pageSize 条数
     * @param id       商家编号
     * @return:
     * @auther: wsl
     * @date: 2019/1/14 9:42
     */
    Page queryCompanyOrderList(Integer id, int nowPage, int pageSize);

    /**
     * 功能描述:
     *
     * @param: 保存自提、预约电话
     * @return:
     * @auther: wsl
     * @date: 2019/1/25 14:24
     */
    void updateInviteAccount(int userId, String phone);
}
